package com.kgc.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * @author hyj
 * @time 2024/4/1 16:27
 * @describe
 */

public class JwtUtil {
    /**
     * 1.token的秘钥   token加密时使用的秘钥，一旦得到此秘钥也就可以伪造token了
     * 2.token的有效时间   token的有效时间，超过此时间token就会失效 - 半小时
     */
    public static String secretKey = "SsmJwtSecretKeyForBlog";
    public final static long KEEP_TIME = 1800000L;

    /**
     * 生成JWT令牌
     *
     * @param claims 自定义内容（载荷）
     * @return 返回JWT令牌
     */
    public static String generateJwt(Map<String, Object> claims) {
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .addClaims(claims)
                .setExpiration(new Date(System.currentTimeMillis() + KEEP_TIME))
                .compact();
    }

    /**
     * 解析JWT令牌
     *
     * @param jwt 令牌
     * @return 返回JWT令牌
     */
    public static Claims parseJwt(String jwt) {
        return Jwts.parser()
                .setSigningKey(secretKey)
                .parseClaimsJws(jwt)
                .getBody();
    }

}

